package com.lsq.common.algorithm.likou;

/**
 * 给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。
 *
 * 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。
 *
 * 注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @author wzc
 * @date 2020/9/1 0001 下午 11:54
 * @desc
 **/
public class ShareSolutionTwo {

    private static final int[] arr = {5,1,7,4,9,2,5};

    public static void main(String[] args) {
        ShareSolutionTwo shareSolutionTwo = new ShareSolutionTwo();
        int price = shareSolutionTwo.solution(arr);
        System.out.println(price);
    }

    /**
     * 解决方案：只需要计算每个空挡差值，然后将正的差值相加即可
     * @return
     */
    private int solution(int[] arr) {
        int num = 0;
        for (int i = 0,len = arr.length-1;i<len;i++) {
            int profit = arr[i] - arr[i+1];
            if(profit > 0) {
                num = num + profit;
            }
        }
        return num;
    }

}
